/*
 * Copyright (c) 2007-2021 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.xajtfb.wxc.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.github.lvyanyang.core.BaseEntity;
import com.github.lvyanyang.core.Const;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 教练员基本资料表
 * @author 马星俊 maxingjun@xci96716.com
 * @since 2021-03-01 17:39:46
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "教练员基本资料表")
public class SchCoach extends BaseEntity {
    /**
     * 主键    
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ExcelIgnore
    @Excel(name = "主键    ", width = 20d)
    @ApiModelProperty(value = "主键    ", position = 1)
    private Long id;

    /**
     * 准教证号
     */
    @Length(max = 50, message = "准教证号长度不能超过{max}个字符")
    @Excel(name = "准教证号", width = 20d)
    @ApiModelProperty(value = "准教证号", position = 2)
    private String quasiTeachNumber;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    @Length(max = 50, message = "姓名长度不能超过{max}个字符")
    @Excel(name = "姓名", width = 20d)
    @ApiModelProperty(value = "姓名", required = true, position = 3)
    private String name;

    /**
     * 驾校名称
     */
    @Excel(name = "驾校名称", width = 20d)
    @ApiModelProperty(value = "驾校名称", required = true, position = 3)
    private String schoolName;

    /**
     * 教练员姓名拼音
     */
    @Length(max = 100, message = "教练员姓名拼音长度不能超过{max}个字符")
    @Excel(name = "教练员姓名拼音", width = 20d)
    @ApiModelProperty(value = "教练员姓名拼音", position = 4)
    private String nameSpell;

    /**
     * 性别
     */
    @Length(max = 10, message = "性别长度不能超过{max}个字符")
    @Excel(name = "性别", width = 20d)
    @ApiModelProperty(value = "性别", position = 5)
    private String sex;

    /**
     * 证件类型
     */
    @Length(max = 50, message = "证件类型长度不能超过{max}个字符")
    @Excel(name = "证件类型", width = 20d)
    @ApiModelProperty(value = "证件类型", position = 6)
    private String idType;

    /**
     * 身份证号
     */
    @Length(max = 50, message = "身份证号长度不能超过{max}个字符")
    @Excel(name = "身份证号", width = 20d)
    @ApiModelProperty(value = "身份证号", position = 7)
    private String idNumber;

    /**
     * 区域名称
     */
    @Length(max = 50, message = "区域名称长度不能超过{max}个字符")
    @Excel(name = "区域名称", width = 20d)
    @ApiModelProperty(value = "区域名称", position = 8)
    private String areaName;

    /**
     * 区域编号
     */
    @Length(max = 50, message = "区域编号长度不能超过{max}个字符")
    @Excel(name = "区域编号", width = 20d)
    @ApiModelProperty(value = "区域编号", position = 9)
    private String areaCode;

    /**
     * 准教类别
     */
    @Length(max = 50, message = "准教类别长度不能超过{max}个字符")
    @Excel(name = "准教类别", width = 20d)
    @ApiModelProperty(value = "准教类别", position = 10)
    private String quasiTeachCategory;

    /**
     * 准教车型编码
     */
    @Length(max = 100, message = "准教车型编码长度不能超过{max}个字符")
    @Excel(name = "准教车型编码", width = 20d)
    @ApiModelProperty(value = "准教车型编码", position = 11)
    private String quasiTeachTypeCode;

    /**
     * 准教车型名称
     */
    @Length(max = 500, message = "准教车型名称长度不能超过{max}个字符")
    @Excel(name = "准教车型名称", width = 20d)
    @ApiModelProperty(value = "准教车型名称", position = 12)
    private String quasiTeachTypeName;

    /**
     * 准教证有效期
     */
    @Excel(name = "准教证有效期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "准教证有效期", position = 13)
    private Date quasiDriveEnddate;

    /**
     * 准教证发证日期
     */
    @Excel(name = "准教证发证日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "准教证发证日期", position = 14)
    private Date quasiDriveStartdate;

    /**
     * 驾校主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Excel(name = "驾校主键", width = 20d)
    @ApiModelProperty(value = "驾校主键", position = 15)
    private Long schoolId;

    /**
     * 文化程度
     */
    @Length(max = 50, message = "文化程度长度不能超过{max}个字符")
    @Excel(name = "文化程度", width = 20d)
    @ApiModelProperty(value = "文化程度", position = 16)
    private String education;

    /**
     * 职称
     */
    @Length(max = 50, message = "职称长度不能超过{max}个字符")
    @Excel(name = "职称", width = 20d)
    @ApiModelProperty(value = "职称", position = 17)
    private String coachZhicheng;

    /**
     * 发证单位
     */
    @Length(max = 200, message = "发证单位长度不能超过{max}个字符")
    @Excel(name = "发证单位", width = 20d)
    @ApiModelProperty(value = "发证单位", position = 18)
    private String certificationDept;

    /**
     * 驾驶证号
     */
    @Length(max = 50, message = "驾驶证号长度不能超过{max}个字符")
    @Excel(name = "驾驶证号", width = 20d)
    @ApiModelProperty(value = "驾驶证号", position = 19)
    private String driverLicenseNumber;

    /**
     * 驾驶证发证日期
     */
    @Excel(name = "驾驶证发证日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "驾驶证发证日期", position = 20)
    private Date driverLicenseStartdate;

    /**
     * 驾驶证有效日期
     */
    @Excel(name = "驾驶证有效日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "驾驶证有效日期", position = 21)
    private Date driverLicenseEnddate;

    /**
     * 备注
     */
    @Length(max = 500, message = "备注长度不能超过{max}个字符")
    @Excel(name = "备注", width = 20d)
    @ApiModelProperty(value = "备注", position = 22)
    private String remark;

    /**
     * 家庭住址
     */
    @Length(max = 300, message = "家庭住址长度不能超过{max}个字符")
    @Excel(name = "家庭住址", width = 20d)
    @ApiModelProperty(value = "家庭住址", position = 23)
    private String familyAddress;

    /**
     * 联系方式
     */
    @Length(max = 50, message = "联系方式长度不能超过{max}个字符")
    @Excel(name = "联系方式", width = 20d)
    @ApiModelProperty(value = "联系方式", position = 24)
    private String tel;

    /**
     * 准驾车型
     */
    @Length(max = 50, message = "准驾车型长度不能超过{max}个字符")
    @Excel(name = "准驾车型", width = 20d)
    @ApiModelProperty(value = "准驾车型", position = 25)
    private String quasiDriveType;

    /**
     * 状态 [离职_0,在职_1,转校中_2,已删除_10]
     */
    @NotNull(message = "状态 [离职_0,在职_1,转校中_2,已删除_10]不能为空")
    @Excel(name = "状态 [离职_0,在职_1,转校中_2,已删除_10]", width = 20d)
    @ApiModelProperty(value = "状态 [离职_0,在职_1,转校中_2,已删除_10]", required = true, position = 26)
    private Integer status;

    /**
     * 教练员签约日期
     */
    @Excel(name = "教练员签约日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "教练员签约日期", position = 27)
    private Date signingStartdate;

    /**
     * 教练员签约到期日期
     */
    @Excel(name = "教练员签约到期日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "教练员签约到期日期", position = 28)
    private Date signingEnddate;

    /**
     * 出生日期
     */
    @Excel(name = "出生日期", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "出生日期", position = 29)
    private Date birthDate;

    /**
     * 审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]
     */
    @NotNull(message = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]不能为空")
    @Excel(name = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]", width = 20d)
    @ApiModelProperty(value = "审核状态 [待上报_1,已上报_2,审核通过_3,驳回_4]", required = true, position = 30)
    private Integer auditStatus;

    /**
     * 审核时间
     */
    @Excel(name = "审核时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "审核时间", position = 31)
    private Date auditDate;

    /**
     * 审核人
     */
    @Length(max = 50, message = "审核人长度不能超过{max}个字符")
    @Excel(name = "审核人", width = 20d)
    @ApiModelProperty(value = "审核人", position = 32)
    private String auditName;

    /**
     * 教练员图片路径
     */
    @Length(max = 500, message = "教练员图片路径长度不能超过{max}个字符")
    @Excel(name = "教练员图片路径", width = 20d)
    @ApiModelProperty(value = "教练员图片路径", position = 33)
    private String coachUrl;

    /**
     * 审核意见
     */
    @Length(max = 500, message = "审核意见长度不能超过{max}个字符")
    @Excel(name = "审核意见", width = 20d)
    @ApiModelProperty(value = "审核意见", position = 34)
    private String auditOpinion;

    /**
     * 数据来源[行业录入_1,企业录入_2]
     */
    @Excel(name = "数据来源[行业录入_1,企业录入_2]", width = 20d)
    @ApiModelProperty(value = "数据来源[行业录入_1,企业录入_2]", position = 35)
    private Integer inputSources;

    /**
     * 是否黑名单[是_1,否__0]
     */
    @Excel(name = "是否黑名单[是_1,否__0]", width = 20d)
    @ApiModelProperty(value = "是否黑名单[是_1,否__0]", position = 36)
    private Integer isblacklist;

    /**
     * 职位
     */
    @Length(max = 500, message = "职位长度不能超过{max}个字符")
    @Excel(name = "职位", width = 20d)
    @ApiModelProperty(value = "职位", position = 37)
    private String workPost;

    /**
     * 是否教练员[是_1,否__0]
     */
    @Excel(name = "是否教练员[是_1,否__0]", width = 20d)
    @ApiModelProperty(value = "是否教练员[是_1,否__0]", position = 38)
    private Integer isCoach;

    /**
     * 旧系统主键id
     */
    @Length(max = 50, message = "旧系统主键id长度不能超过{max}个字符")
    @Excel(name = "旧系统主键id", width = 20d)
    @ApiModelProperty(value = "旧系统主键id", position = 39)
    private String oldStrid;

    /**
     * 创建人主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Excel(name = "创建人主键", width = 20d)
    @ApiModelProperty(value = "创建人主键", position = 40)
    private Long createUserId;

    /**
     * 创建人姓名
     */
    @Length(max = 100, message = "创建人姓名长度不能超过{max}个字符")
    @Excel(name = "创建人姓名", width = 20d)
    @ApiModelProperty(value = "创建人姓名", position = 41)
    private String createUserName;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "创建时间", position = 42)
    private Date createDateTime;

    /**
     * 修改人主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Excel(name = "修改人主键", width = 20d)
    @ApiModelProperty(value = "修改人主键", position = 43)
    private Long updateUserId;

    /**
     * 修改人姓名
     */
    @Length(max = 100, message = "修改人姓名长度不能超过{max}个字符")
    @Excel(name = "修改人姓名", width = 20d)
    @ApiModelProperty(value = "修改人姓名", position = 44)
    private String updateUserName;

    /**
     * 修改时间
     */
    @Excel(name = "修改时间", width = 20d, exportFormat = Const.DEFAULT_DATETIME_PATTERN)
    @ApiModelProperty(value = "修改时间", position = 45)
    private Date updateDateTime;

}